/**************************************************************************
 *  创建者：        hualei
 *  开始时间：   2018.06.23
 *  copyright:  (C) 深圳市华友高科有限公司
 *  修改说明：  (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 *
 ***************************************************************************
 *   MUSIC 音乐指令属性编辑视窗类
 *
 ***************************************************************************/
#ifndef MUSICINSTRUCTIONVIEW_H
#define MUSICINSTRUCTIONVIEW_H

#include <QWidget>
#include "musicinstructionview_global.h"
#include <QTranslator>
#include <QAbstractItemModel>
#include <QHash>
#include "hmicommondefine.h"

// 前置声明程序编辑主视图类
class ProgramView;
/**
 *      音乐文件夹路径
 */
#define CONTROL_MUSICFILE_PATH  "/agvwork/AgvFundation/fundation/data/robotData1/music"

namespace Ui {
class MusicInstructionView;
}

/**
 * @brief The MusicInstructionView class    MUSIC 音乐指令属性编辑视窗类
 */
class  MUSICINSTRUCTIONVIEWSHARED_EXPORT MusicInstructionView : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief MusicInstructionView      构造函数
     * @param parent
     */
    explicit MusicInstructionView(int styleId,QWidget *parent = 0);


    int setMusicFileList(QVector <QString> musicFileListIn);

    /**
     * @brief getInput      获取输入数据
     */
    void getInput();

    /**
     * @brief updateView    更新数据到视图
     */
    void updateView();

    /**
     * @brief changeLanguage    翻译
     * @param language          语言编号
     */
    void changeLanguage(int language);

    void initialDisplayStyle(int styleId);

private:
    int initialMusicList();

private slots:
    /**
     * @brief on_clearNote_Btn_clicked  清除注释
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked       保存
     */
    void on_save_Btn_clicked();

    /**
     * @brief on_forward_Btn_clicked    上一页
     */
    void on_forward_Btn_clicked();

    /**
     * @brief on_Slider_MusicVolume_sliderMoved     滑块位置
     * @param position
     */
    void on_Slider_MusicVolume_sliderMoved(int position);

    /**
     * @brief on_Slider_MusicVolume_valueChanged    滑块数值改变
     * @param value
     */
    void on_Slider_MusicVolume_valueChanged(int value);

    /**
     * @brief on_Edit_MusicVolume_textEdited    音量输入框内容改变
     * @param arg1
     */
    void on_Edit_MusicVolume_textEdited(const QString &arg1);

    /**
     * @brief listMusicDirSlot      获取目录信息
     * @param musicDirInfoList      音乐文件信息列表
     * @param ftpPath               控制器路径
     * @param clientPath            客户端路径
     */
    void listMusicDirSlot(const QHash <QString, bool> & musicDirInfoList, const QString& ftpPath, const QString& clientPath);

signals:

    /**
     * @brief saveInstruction           保存编辑好的指令
     * @param instruction                   指令
     */
    void saveInstructionSignal(const QString& instruction);

    /**
     * @brief finishEditInstruction     完成指令编辑
     */
    void finishEditInstructionSignal();

    /**
     * @brief cleanNote                 清除注释
     */
    void cleanNote();

private:

    /**
     * @brief _FromSpecialEncoding          编码转换,由FTP 编码转为本地编码
     * @param InputStr                      需要转换的字符
     * @return                              转换好的编码字符串
     */
    QString _FromSpecialEncoding(const QString &InputStr);

    /**
     * @brief conversionVolume              音量转换
     * @param volumeIn                      指令参数音量( 0-100 )
     * @return                              实际音量
     */
    int conversionVolume(int &volumeIn);

<<<<<<< HEAD
=======

>>>>>>> dev
public:

    /**
     * @brief programView       程序主视图窗口
     */
    ProgramView *programView;

    /**
     * @brief instructionOut    指令字符串
     */
    QString instructionOut;

    /**
     * @brief musicFileName     音乐文件名
     */
    QString musicFileName;

    /**
     * @brief musicPlayTimes    音乐播放次数
     */
    int musicPlayTimes;

    /**
     * @brief musicVolume
     */
    int musicVolume;

    /**
     * @brief noteStr       注释
     */
    QString noteStr;

    /**
     * @brief musicFileListFlag     list访问音乐目录标识
     */
    bool musicFileListFlag;

private:

    Ui::MusicInstructionView *ui;

    /**
     * @brief translator    翻译
     */
    QTranslator translator;

    // TableView 数据模型
//    QAbstractItemModel *musicFileModel;

    /**
     * @brief musicFileList     保存音乐文件容器
     */
    QVector <QString> musicFileList;

//    bool musicFileListFlag;
};

#endif // MUSICINSTRUCTIONVIEW_H
